package 周赛._277;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 会玩的洋洋
 */
public class _5990_找出数组中的所有孤独数字 {
    /**
     * 使用哈希表进行存储，如果数组中存在不符合条件的，则存储为false
     * 最后遍历寻找结果为true的数，并且存入集合中，返回即可
     * @param nums 目标数组
     * @return List<Integer>
     */
    public List<Integer> findLonely(int[] nums) {
        int n = nums.length;
        Map<Integer, Boolean> hash = new HashMap<>(n);
        List<Integer> ans = new ArrayList<>();
        // 遍历查询是否存在相同的数
        for (int num : nums) {
            if (hash.containsKey(num)) {
                hash.put(num, false);
            } else {
                hash.put(num, true);
            }
        }
        // 遍历查询是否存在相邻的数
        for (int num : nums) {
            if (hash.containsKey(num - 1) || hash.containsKey(num + 1)) {
                hash.put(num, false);
            }
        }
        // 遍历查询结果为 true 的数，将结果存储 ans
        for (int num : nums) {
            if (hash.get(num)) {
                ans.add(num);
            }
        }
        return ans;
    }
}
